package com.liangdemo.web.redis;


import com.liangdemo.web.model.User;
import com.liangdemo.web.model.VM.UserVM;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 使用缓存注解的测试类
 *
 * @author Mr.Liang
 * @date 2022/5/20 16:41
 */
@RestController
public class UserRedisController {
    @Autowired
    private UserRedisService userRedisService;

    /**
     * 将方法的运行结果进行缓存
     * 几个属性：
     * cacheName/value：指定缓存的名字
     * key：缓存数据时，使用的key，默认使用方法参数的值
     * key可以用SpEl表达式来写
     * keyGenerator :key的生成器，可以自己指定key的生成器
     * key和keyGenerator（二选一使用）
     * cacheManger：指定缓存管理器
     * condition：指定符合条件的情况下，才缓存
     * unless:否定缓存，当为true时，方法返回值不返回，可以获取到结果进行判断
     *
     * @param userid
     * @return
     */
    @GetMapping("/redisGet")
    public UserVM getUser(String userid) {
        UserVM userVM = userRedisService.getuser(userid);
        return userVM;
    }

    @GetMapping("/findById")
    public User findById(String id) {
        return userRedisService.findById(id);
    }

    @PutMapping("/update")
    public void update(String id) {
        userRedisService.update(id);
    }

    @PutMapping("/update1")
    public void update1(String id) {
        userRedisService.update1(id);
    }
}
